Improving Quality of Avionics Software Using Mutation Testing
نویسندگان
چکیده
Mutation testing is a powerful fault-based testing technique that makes syntactic changes to a program under test in order to simulate real faults otherwise caused by a programmer. Similar to structural coverage criteria such as statement coverage, mutation testing is used to assess the quality of a test suite. After a syntactic change has been made, the program is referred to as a mutant that either can survive a test suite, or be killed by one. If a mutant is killed, it means that the test suite has detected the syntactic change and reported it as an error, resulting in an increased mutation score. If a mutant survives, it means that the test suite failed to detect the fault and the mutation score is decreased. Mutation testing is generally considered the strongest testing technique available in terms of fault detection, but also the most expensive one. However, thanks to recent research and the rapid development of computing hardware, the testing technique is starting to become feasible, motivating the creation of tools utilizing the power of mutation testing. Saab AB, the Swedish aircraft manufacturer and stakeholder in this thesis, has experimented with mutation testing in the past, resulting in a tool called BAX that creates textual modifications of the original source code. The initial goal of this thesis is to provide a new tool that is faster than BAX, and that is more systematic in the way mutants are generated. LLVM-P86, the main contribution of this thesis, is a compiler and mutation testing framework intended for the programming language Pascal-86. Unlike BAX, LLVM-P86 is able to encode several mutants into a single program, thus reducing the time spent on compiling source code. In the conducted experiments, LLVM-P86 processed mutants significantly faster than BAX, on average by a factor of 13.6. Since LLVM-P86 is also a compiler, proper type information is available when mutants are generated. The additional type information allows LLVM-P86 to avoid a significant amount of equivalent mutants, i.e. mutants that behave in the same way as the original program. When mutating relational operators found in approximately 10,000 lines of code, distributed amongst 18 different Pascal-86 modules, LLVM-P86 was able to reduce the total number of living mutants by 25%, or 5.7% of the complete set of mutants. Acknowledgements I would like to start by saying thank you to Professor Nahid Shahmehri, for encouraging me to jump into deep waters so I could challenge myself beyond my own expectations. Also, thank you to my supervisor, Ulf Kargén, for doing an excellent job proofreading this thesis and giving general guidance on what it means to conduct scientific research. I would also like to thank Saab Aeronautics for giving me the opportunity to work with brilliant people who understand the importance of quality in software. Perhaps there is some hope for humanity after all. A special thank you goes out to my supervisor at Saab, Fredrik Gustavsson, for his amazing ability to fill in the gaps in my own line of thought. Thank you. John Törnblom Linköping, Sweden November 2013
منابع مشابه
مروری بر روش های تولید داده های آزمون در آزمون جهشی
The Spurt is led to increasing the workload for software engineers in context of producing reliable software. Given the importance of producing high quality software, software engineers created an independent process in cycle of software development that called Software Testing. One of the software testing methods that a lot of researches have been done on it is Mutation Testing. Most of the re...
متن کاملSoftware testing in the real world - improving the process
software testing in the real world improving the process pdf software testing in the real world improving the process software testing in the real world improving the process software testing in the real world improving the process software testing – reading list bcs the chartered software testing bibliography westfall team improving your test process (with tpi next and tmmi) improving software...
متن کاملGeneration of Branch Coverage Test Data for Simulink/Stateflow Models Using Crest Tool
Automated test suite generation is an optimization technique to reduce test effort and duration. Software Testing has traditionally been one of the main techniques contributing to high software quality and dependability. Testing performance consumes about 50% of software development resources, so any methods aiming at reducing softwaretesting costs are likely to reduce software development cost...
متن کاملIASSF: A Simulation For F/A-18 Avionics Software Testing
The Integrated Avionics Systems Support Facility (IASSF) provides a simulated environment to test F/A-18 avionics, avionics software and system behaviour on the ground without the initial need for real F/A-18 flight testing. The Royal Australian Air Force (RAAF) has commissioned IASSF to allow mission critical Operational Flight Programs (OFPs) in the F/A-18 to be written, modified and tested. ...
متن کاملAutomated Integration Testing for Avionics Systems
• On module testing level, tests are performed against low-level software requirements (i.e., design specifications), and the test data refers to software objects (e.g., function interfaces, global variables). • On software integration level, tests are performed against high-level software requirements, and the test data refers again to software objects. • On HW/SW integration level, tests are ...
متن کامل